import RegForm from '../../../src/components/RegForm.vue';
import { describe, it, expect, jest, beforeEach } from '@jest/globals';
import { createRouter, createWebHistory } from 'vue-router';
import { mount } from '@vue/test-utils';
import { Quasar } from 'quasar';
import routes from '../../../src/router/routes';
import { createPinia, defineStore } from 'pinia';

jest.mock('src/boot/apollo', () => ({
  apollo: {
    default: {
      query: jest.fn(() => Promise.resolve({ data: {} })), // Возвращаем промис с пустыми данными
      mutate: jest.fn(() => Promise.resolve({ data: {} })),
    },
  },
}));

const router = createRouter({
  history: createWebHistory(process.env.BASE_URL),
  routes,
});

const pinia = createPinia();

describe('RegForm', () => {
  let wrapper;
  beforeEach(() => {
    wrapper = mount(
      {
        components: {
          RegForm,
        },
        template: `
      <q-layout>
        <q-page-container>
          <q-page>
            <reg-form />
          </q-page>
        </q-page-container>
      </q-layout>
    `,
      },
      {
        global: {
          plugins: [Quasar, router, pinia],
          // Здесь не нужно регистрировать компоненты Quasar, если они уже включены через плагин Quasar
        },
      },
    );
  });

  it('renders input fields for name, last name, username, and passwords', async () => {
    const wrapper = mount(RegForm);
    expect(wrapper.find('#first_name').exists()).toBeTruthy();
    expect(wrapper.find('#last_name').exists()).toBeTruthy();
    expect(wrapper.find('#username').exists()).toBeTruthy();
    // Используйте селекторы Quasar для проверки полей пароля, например:
    //expect(wrapper.findAll('input[type="password"]').length).toBe(2); // Если ожидается два поля ввода пароля
  });

  it('renders selects for gender and language', () => {
    const selects = wrapper.findAllComponents({ name: 'q-select' });
    expect(selects.length).toBe(2); // Ожидается, что найдено 2 компонента: Пол и Основной язык
  });

  // Проверка наличия кнопки регистрации

  it('renders a submit button', () => {
    console.log(wrapper.html());
    const linkText = wrapper.text();
    expect(linkText.includes('Зарегистрироваться')).toBeTruthy();
  });

  // Проверка наличия контейнера капчи

  it('renders a captcha container', () => {
    const wrapper = mount(RegForm);
    expect(wrapper.find('#captcha-container').exists()).toBeTruthy();
  });
});
